',
captionModule: 'caption'
});
jQuery(document).on( 'cycle-update-view', function( e, opts, slideOpts, currSlide ) {
if ( opts.captionModule !== 'caption' )
return;
var el;
$.each(['caption','overlay'], function() {
var name = this;
var template = slideOpts[name+'Template'];
var el = opts.API.getComponent( name );
if( el.length && template ) {
el.html( opts.API.tmpl( template, slideOpts, opts, currSlide ) );
el.show();
}
else {
el.hide();
}
});
});
jQuery(document).on( 'cycle-destroyed', function( e, opts ) {
var el;
$.each(['caption','overlay'], function() {
var name = this, template = opts[name+'Template'];
if ( opts[name] && template ) {
el = opts.API.getComponent( 'caption' );
el.empty();
}
});
});
})(jQuery);
/*! command plugin for Cycle2; version: 20140415 */
(function($) {
"use strict";
var c2 = $.fn.cycle;
$.fn.cycle = function( options ) {
var cmd, cmdFn, opts;
var args = $.makeArray( arguments );
if ( $.type( options ) == 'number' ) {
return this.cycle( 'goto', options );
}
if ( $.type( options ) == 'string' ) {
return this.each(function() {
var cmdArgs;
cmd = options;
opts = jQuery(this).data('cycle.opts');
if ( opts === undefined ) {
c2.log('slideshow must be initialized before sending commands; "' + cmd + '" ignored');
return;
}
else {
cmd = cmd == 'goto' ? 'jump' : cmd; // issue #3; change 'goto' to 'jump' internally
cmdFn = opts.API[ cmd ];
if ( $.isFunction( cmdFn )) {
cmdArgs = $.makeArray( args );
cmdArgs.shift();
return cmdFn.apply( opts.API, cmdArgs );
}
else {
c2.log( 'unknown command: ', cmd );
}
}
});
}
else {
return c2.apply( this, arguments );
}
};
// copy props
$.extend( $.fn.cycle, c2 );
$.extend( c2.API, {
next: function() {
var opts = this.opts();
if ( opts.busy && ! opts.manualTrump )
return;
var count = opts.reverse ? -1 : 1;
if ( opts.allowWrap === false && ( opts.currSlide + count ) >= opts.slideCount )
return;
opts.API.advanceSlide( count );
opts.API.trigger('cycle-next', [ opts ]).log('cycle-next');
},
prev: function() {
var opts = this.opts();
if ( opts.busy && ! opts.manualTrump )
return;
var count = opts.reverse ? 1 : -1;
if ( opts.allowWrap === false && ( opts.currSlide + count ) < 0 )
return;
opts.API.advanceSlide( count );
opts.API.trigger('cycle-prev', [ opts ]).log('cycle-prev');
},
destroy: function() {
this.stop(); //#204
var opts = this.opts();
var clean = $.isFunction( $._data ) ? $._data : $.noop; // hack for #184 and #201
clearTimeout(opts.timeoutId);
opts.timeoutId = 0;
opts.API.stop();
opts.API.trigger( 'cycle-destroyed', [ opts ] ).log('cycle-destroyed');
opts.container.removeData();
clean( opts.container[0], 'parsedAttrs', false );
// #75; remove inline styles
if ( ! opts.retainStylesOnDestroy ) {
opts.container.removeAttr( 'style' );
opts.slides.removeAttr( 'style' );
opts.slides.removeClass( opts.slideActiveClass );
}
opts.slides.each(function() {
var slide = jQuery(this);
slide.removeData();
slide.removeClass( opts.slideClass );
clean( this, 'parsedAttrs', false );
});
},
jump: function( index, fx ) {
// go to the requested slide
var fwd;
var opts = this.opts();
if ( opts.busy && ! opts.manualTrump )
return;
var num = parseInt( index, 10 );
if (isNaN(num) || num < 0 || num >= opts.slides.length) {
opts.API.log('goto: invalid slide index: ' + num);
return;
}
if (num == opts.currSlide) {
opts.API.log('goto: skipping, already on slide', num);
return;
}
opts.nextSlide = num;
clearTimeout(opts.timeoutId);
opts.timeoutId = 0;
opts.API.log('goto: ', num, ' (zero-index)');
fwd = opts.currSlide < opts.nextSlide;
opts._tempFx = fx;
opts.API.prepareTx( true, fwd );
},
stop: function() {
var opts = this.opts();
var pauseObj = opts.container;
clearTimeout(opts.timeoutId);
opts.timeoutId = 0;
opts.API.stopTransition();
if ( opts.pauseOnHover ) {
if ( opts.pauseOnHover !== true )
pauseObj = jQuery( opts.pauseOnHover );
pauseObj.off('mouseenter mouseleave');
}
opts.API.trigger('cycle-stopped', [ opts ]).log('cycle-stopped');
},
reinit: function() {
var opts = this.opts();
opts.API.destroy();
opts.container.cycle();
},
remove: function( index ) {
var opts = this.opts();
var slide, slideToRemove, slides = [], slideNum = 1;
for ( var i=0; i < opts.slides.length; i++ ) {
slide = opts.slides[i];
if ( i == index ) {
slideToRemove = slide;
}
else {
slides.push( slide );
jQuery( slide ).data('cycle.opts').slideNum = slideNum;
slideNum++;
}
}
if ( slideToRemove ) {
opts.slides = jQuery( slides );
opts.slideCount--;
jQuery( slideToRemove ).remove();
if (index == opts.currSlide)
opts.API.advanceSlide( 1 );
else if ( index < opts.currSlide )
opts.currSlide--;
else
opts.currSlide++;
opts.API.trigger('cycle-slide-removed', [ opts, index, slideToRemove ]).log('cycle-slide-removed');
opts.API.updateView();
}
}
});
// listen for clicks on elements with data-cycle-cmd attribute
jQuery(document).on('click.cycle', '[data-cycle-cmd]', function(e) {
// issue cycle command
alert();
e.preventDefault();
var el = jQuery(this);
var command = el.data('cycle-cmd');
var context = el.data('cycle-context') || '.cycle-slideshow';
jQuery(context).cycle(command, el.data('cycle-arg'));
});
})(jQuery);
/*! hash plugin for Cycle2; version: 20130905 */
(function($) {
"use strict";
jQuery(document).on( 'cycle-pre-initialize', function( e, opts ) {
onHashChange( opts, true );
opts._onHashChange = function() {
onHashChange( opts, false );
};
jQuery( window ).on( 'hashchange', opts._onHashChange);
});
jQuery(document).on( 'cycle-update-view', function( e, opts, slideOpts ) {
if ( slideOpts.hash && ( '#' + slideOpts.hash ) != window.location.hash ) {
opts._hashFence = true;
window.location.hash = slideOpts.hash;
}
});
jQuery(document).on( 'cycle-destroyed', function( e, opts) {
if ( opts._onHashChange ) {
jQuery( window ).off( 'hashchange', opts._onHashChange );
}
});
function onHashChange( opts, setStartingSlide ) {
var hash;
if ( opts._hashFence ) {
opts._hashFence = false;
return;
}
hash = window.location.hash.substring(1);
opts.slides.each(function(i) {
if ( jQuery(this).data( 'cycle-hash' ) == hash ) {
if ( setStartingSlide === true ) {
opts.startingSlide = i;
}
else {
var fwd = opts.currSlide < i;
opts.nextSlide = i;
opts.API.prepareTx( true, fwd );
}
return false;
}
});
}
})(jQuery);
/*! loader plugin for Cycle2; version: 20131121 */
(function($) {
"use strict";
$.extend($.fn.cycle.defaults, {
loader: false
});
jQuery(document).on( 'cycle-bootstrap', function( e, opts ) {
var addFn;
if ( !opts.loader )
return;
// override API.add for this slideshow
addFn = opts.API.add;
opts.API.add = add;
function add( slides, prepend ) {
var slideArr = [];
if ( $.type( slides ) == 'string' )
slides = $.trim( slides );
else if ( $.type( slides) === 'array' ) {
for (var i=0; i < slides.length; i++ )
slides[i] = jQuery(slides[i])[0];
}
slides = jQuery( slides );
var slideCount = slides.length;
if ( ! slideCount )
return;
slides.css('visibility','hidden').appendTo('body').each(function(i) { // appendTo fixes #56
var count = 0;
var slide = jQuery(this);
var images = slide.is('img') ? slide : slide.find('img');
slide.data('index', i);
// allow some images to be marked as unimportant (and filter out images w/o src value)
images = images.filter(':not(.cycle-loader-ignore)').filter(':not([src=""])');
if ( ! images.length ) {
--slideCount;
slideArr.push( slide );
return;
}
count = images.length;
images.each(function() {
// add images that are already loaded
if ( this.complete ) {
imageLoaded();
}
else {
jQuery(this).load(function() {
imageLoaded();
}).on("error", function() {
if ( --count === 0 ) {
// ignore this slide
opts.API.log('slide skipped; img not loaded:', this.src);
if ( --slideCount === 0 && opts.loader == 'wait') {
addFn.apply( opts.API, [ slideArr, prepend ] );
}
}
});
}
});
function imageLoaded() {
if ( --count === 0 ) {
--slideCount;
addSlide( slide );
}
}
});
if ( slideCount )
opts.container.addClass('cycle-loading');
function addSlide( slide ) {
var curr;
if ( opts.loader == 'wait' ) {
slideArr.push( slide );
if ( slideCount === 0 ) {
// #59; sort slides into original markup order
slideArr.sort( sorter );
addFn.apply( opts.API, [ slideArr, prepend ] );
opts.container.removeClass('cycle-loading');
}
}
else {
curr = jQuery(opts.slides[opts.currSlide]);
addFn.apply( opts.API, [ slide, prepend ] );
curr.show();
opts.container.removeClass('cycle-loading');
}
}
function sorter(a, b) {
return a.data('index') - b.data('index');
}
}
});
})(jQuery);
/*! pager plugin for Cycle2; version: 20140415 */
(function($) {
"use strict";
$.extend($.fn.cycle.defaults, {
pager: '> .cycle-pager',
pagerActiveClass: 'cycle-pager-active',
pagerEvent: 'click.cycle',
pagerEventBubble: undefined,
pagerTemplate: '•'
});
jQuery(document).on( 'cycle-bootstrap', function( e, opts, API ) {
// add method to API
API.buildPagerLink = buildPagerLink;
});
jQuery(document).on( 'cycle-slide-added', function( e, opts, slideOpts, slideAdded ) {
if ( opts.pager ) {
opts.API.buildPagerLink ( opts, slideOpts, slideAdded );
opts.API.page = page;
}
});
jQuery(document).on( 'cycle-slide-removed', function( e, opts, index, slideRemoved ) {
if ( opts.pager ) {
var pagers = opts.API.getComponent( 'pager' );
pagers.each(function() {
var pager = jQuery(this);
jQuery( pager.children()[index] ).remove();
});
}
});
jQuery(document).on( 'cycle-update-view', function( e, opts, slideOpts ) {
var pagers;
if ( opts.pager ) {
pagers = opts.API.getComponent( 'pager' );
pagers.each(function() {
jQuery(this).children().removeClass( opts.pagerActiveClass )
.eq( opts.currSlide ).addClass( opts.pagerActiveClass );
});
}
});
jQuery(document).on( 'cycle-destroyed', function( e, opts ) {
var pager = opts.API.getComponent( 'pager' );
if ( pager ) {
pager.children().off( opts.pagerEvent ); // #202
if ( opts.pagerTemplate )
pager.empty();
}
});
function buildPagerLink( opts, slideOpts, slide ) {
var pagerLink;
var pagers = opts.API.getComponent( 'pager' );
pagers.each(function() {
var pager = jQuery(this);
if ( slideOpts.pagerTemplate ) {
var markup = opts.API.tmpl( slideOpts.pagerTemplate, slideOpts, opts, slide[0] );
pagerLink = jQuery( markup ).appendTo( pager );
}
else {
pagerLink = pager.children().eq( opts.slideCount - 1 );
}
pagerLink.on( opts.pagerEvent, function(e) {
if ( ! opts.pagerEventBubble )
e.preventDefault();
opts.API.page( pager, e.currentTarget);
});
});
}
function page( pager, target ) {
/*jshint validthis:true */
var opts = this.opts();
if ( opts.busy && ! opts.manualTrump )
return;
var index = pager.children().index( target );
var nextSlide = index;
var fwd = opts.currSlide < nextSlide;
if (opts.currSlide == nextSlide) {
return; // no op, clicked pager for the currently displayed slide
}
opts.nextSlide = nextSlide;
opts._tempFx = opts.pagerFx;
opts.API.prepareTx( true, fwd );
opts.API.trigger('cycle-pager-activated', [opts, pager, target ]);
}
})(jQuery);
/*! prevnext plugin for Cycle2; version: 20140408 */
(function($) {
"use strict";
$.extend($.fn.cycle.defaults, {
next: '> .cycle-next',
nextEvent: 'click.cycle',
disabledClass: 'disabled',
prev: '> .cycle-prev',
prevEvent: 'click.cycle',
swipe: true
});
jQuery(document).on( 'cycle-initialized', function( e, opts ) {
opts.API.getComponent( 'next' ).on( opts.nextEvent, function(e) {
e.preventDefault();
opts.API.next();
});
opts.API.getComponent( 'prev' ).on( opts.prevEvent, function(e) {
e.preventDefault();
opts.API.prev();
});
if ( opts.swipe ) {
var nextEvent = opts.swipeVert ? 'swipeUp.cycle' : 'swipeLeft.cycle swipeleft.cycle';
var prevEvent = opts.swipeVert ? 'swipeDown.cycle' : 'swipeRight.cycle swiperight.cycle';
opts.container.on( nextEvent, function(e) {
opts._tempFx = opts.swipeFx;
opts.API.next();
});
opts.container.on( prevEvent, function() {
opts._tempFx = opts.swipeFx;
opts.API.prev();
});
}
});
jQuery(document).on( 'cycle-update-view', function( e, opts, slideOpts, currSlide ) {
if ( opts.allowWrap )
return;
var cls = opts.disabledClass;
var next = opts.API.getComponent( 'next' );
var prev = opts.API.getComponent( 'prev' );
var prevBoundry = opts._prevBoundry || 0;
var nextBoundry = (opts._nextBoundry !== undefined)?opts._nextBoundry:opts.slideCount - 1;
if ( opts.currSlide == nextBoundry )
next.addClass( cls ).prop( 'disabled', true );
else
next.removeClass( cls ).prop( 'disabled', false );
if ( opts.currSlide === prevBoundry )
prev.addClass( cls ).prop( 'disabled', true );
else
prev.removeClass( cls ).prop( 'disabled', false );
});
jQuery(document).on( 'cycle-destroyed', function( e, opts ) {
opts.API.getComponent( 'prev' ).off( opts.nextEvent );
opts.API.getComponent( 'next' ).off( opts.prevEvent );
opts.container.off( 'swipeleft.cycle swiperight.cycle swipeLeft.cycle swipeRight.cycle swipeUp.cycle swipeDown.cycle' );
});
})(jQuery);
/*! progressive loader plugin for Cycle2; version: 20130315 */
(function($) {
"use strict";
$.extend($.fn.cycle.defaults, {
progressive: false
});
jQuery(document).on( 'cycle-pre-initialize', function( e, opts ) {
if ( !opts.progressive )
return;
var API = opts.API;
var nextFn = API.next;
var prevFn = API.prev;
var prepareTxFn = API.prepareTx;
var type = $.type( opts.progressive );
var slides, scriptEl;
if ( type == 'array' ) {
slides = opts.progressive;
}
else if ($.isFunction( opts.progressive ) ) {
slides = opts.progressive( opts );
}
else if ( type == 'string' ) {
scriptEl = jQuery( opts.progressive );
slides = $.trim( scriptEl.html() );
if ( !slides )
return;
// is it json array?
if ( /^(\[)/.test( slides ) ) {
try {
slides = $.parseJSON( slides );
}
catch(err) {
API.log( 'error parsing progressive slides', err );
return;
}
}
else {
// plain text, split on delimeter
slides = slides.split( new RegExp( scriptEl.data('cycle-split') || '\n') );
// #95; look for empty slide
if ( ! slides[ slides.length - 1 ] )
slides.pop();
}
}
if ( prepareTxFn ) {
API.prepareTx = function( manual, fwd ) {
var index, slide;
if ( manual || slides.length === 0 ) {
prepareTxFn.apply( opts.API, [ manual, fwd ] );
return;
}
if ( fwd && opts.currSlide == ( opts.slideCount-1) ) {
slide = slides[ 0 ];
slides = slides.slice( 1 );
opts.container.one('cycle-slide-added', function(e, opts ) {
setTimeout(function() {
opts.API.advanceSlide( 1 );
},50);
});
opts.API.add( slide );
}
else if ( !fwd && opts.currSlide === 0 ) {
index = slides.length-1;
slide = slides[ index ];
slides = slides.slice( 0, index );
opts.container.one('cycle-slide-added', function(e, opts ) {
setTimeout(function() {
opts.currSlide = 1;
opts.API.advanceSlide( -1 );
},50);
});
opts.API.add( slide, true );
}
else {
prepareTxFn.apply( opts.API, [ manual, fwd ] );
}
};
}
if ( nextFn ) {
API.next = function() {
var opts = this.opts();
if ( slides.length && opts.currSlide == ( opts.slideCount - 1 ) ) {
var slide = slides[ 0 ];
slides = slides.slice( 1 );
opts.container.one('cycle-slide-added', function(e, opts ) {
nextFn.apply( opts.API );
opts.container.removeClass('cycle-loading');
});
opts.container.addClass('cycle-loading');
opts.API.add( slide );
}
else {
nextFn.apply( opts.API );
}
};
}
if ( prevFn ) {
API.prev = function() {
var opts = this.opts();
if ( slides.length && opts.currSlide === 0 ) {
var index = slides.length-1;
var slide = slides[ index ];
slides = slides.slice( 0, index );
opts.container.one('cycle-slide-added', function(e, opts ) {
opts.currSlide = 1;
opts.API.advanceSlide( -1 );
opts.container.removeClass('cycle-loading');
});
opts.container.addClass('cycle-loading');
opts.API.add( slide, true );
}
else {
prevFn.apply( opts.API );
}
};
}
});
})(jQuery);
/*! tmpl plugin for Cycle2; version: 20121227 */
(function($) {
"use strict";
$.extend($.fn.cycle.defaults, {
tmplRegex: '{{((.)?.*?)}}'
});
$.extend($.fn.cycle.API, {
tmpl: function( str, opts /*, ... */) {
var regex = new RegExp( opts.tmplRegex || $.fn.cycle.defaults.tmplRegex, 'g' );
var args = $.makeArray( arguments );
args.shift();
return str.replace(regex, function(_, str) {
var i, j, obj, prop, names = str.split('.');
for (i=0; i < args.length; i++) {
obj = args[i];
if ( ! obj )
continue;
if (names.length > 1) {
prop = obj;
for (j=0; j < names.length; j++) {
obj = prop;
prop = prop[ names[j] ] || str;
}
} else {
prop = obj[str];
}
if ($.isFunction(prop))
return prop.apply(obj, args);
if (prop !== undefined && prop !== null && prop != str)
return prop;
}
return str;
});
}
});
})(jQuery);
// source --> http://cuchet.es/wp-content/plugins/product-catalog/js/jquery.cycle2.carousel.js?ver=8c3645465f024f2a9207a24c497ed4bf
/*! carousel transition plugin for Cycle2; version: 20130528 */
(function($) {
"use strict";
$( document ).on('cycle-bootstrap', function( e, opts, API ) {
if ( opts.fx !== 'carousel' )
return;
API.getSlideIndex = function( el ) {
var slides = this.opts()._carouselWrap.children();
var i = slides.index( el );
return i % slides.length;
};
// override default 'next' function
API.next = function() {
var count = opts.reverse ? -1 : 1;
if ( opts.allowWrap === false && ( opts.currSlide + count ) > opts.slideCount - opts.carouselVisible )
return;
opts.API.advanceSlide( count );
opts.API.trigger('cycle-next', [ opts ]).log('cycle-next');
};
});
$.fn.cycle.transitions.carousel = {
// transition API impl
preInit: function( opts ) {
opts.hideNonActive = false;
opts.container.on('cycle-destroyed', $.proxy(this.onDestroy, opts.API));
// override default API implementation
opts.API.stopTransition = this.stopTransition;
// issue #10
for (var i=0; i < opts.startingSlide; i++) {
opts.container.append( opts.slides[0] );
}
},
// transition API impl
postInit: function( opts ) {
var i, j, slide, pagerCutoffIndex, wrap;
var vert = opts.carouselVertical;
if (opts.carouselVisible && opts.carouselVisible > opts.slideCount)
opts.carouselVisible = opts.slideCount - 1;
var visCount = opts.carouselVisible || opts.slides.length;
var slideCSS = { display: vert ? 'block' : 'inline-block', position: 'static' };
// required styles
opts.container.css({ position: 'relative', overflow: 'hidden' });
opts.slides.css( slideCSS );
opts._currSlide = opts.currSlide;
// wrap slides in a div; this div is what is animated
wrap = $('')
.prependTo( opts.container )
.css({ margin: 0, padding: 0, top: 0, left: 0, position: 'absolute' })
.append( opts.slides );
opts._carouselWrap = wrap;
if ( !vert )
wrap.css('white-space', 'nowrap');
if ( opts.allowWrap !== false ) {
// prepend and append extra slides so we don't see any empty space when we
// near the end of the carousel. for fluid containers, add even more clones
// so there is plenty to fill the screen
// @todo: optimzie this based on slide sizes
for ( j=0; j < (opts.carouselVisible === undefined ? 2 : 1); j++ ) {
for ( i=0; i < opts.slideCount; i++ ) {
wrap.append( opts.slides[i].cloneNode(true) );
}
i = opts.slideCount;
while ( i-- ) { // #160, #209
wrap.prepend( opts.slides[i].cloneNode(true) );
}
}
wrap.find('.cycle-slide-active').removeClass('cycle-slide-active');
opts.slides.eq(opts.startingSlide).addClass('cycle-slide-active');
}
if ( opts.pager && opts.allowWrap === false ) {
// hide "extra" pagers
pagerCutoffIndex = opts.slideCount - visCount;
$( opts.pager ).children().filter( ':gt('+pagerCutoffIndex+')' ).hide();
}
opts._nextBoundry = opts.slideCount - opts.carouselVisible;
this.prepareDimensions( opts );
},
prepareDimensions: function( opts ) {
var dim, offset, pagerCutoffIndex, tmp, j;
var vert = opts.carouselVertical;
var visCount = opts.carouselVisible || opts.slides.length;
if ( opts.carouselFluid && opts.carouselVisible ) {
if ( ! opts._carouselResizeThrottle ) {
// fluid container AND fluid slides; slides need to be resized to fit container
this.fluidSlides( opts );
}
}
else if ( opts.carouselVisible && opts.carouselSlideDimension ) {
dim = visCount * opts.carouselSlideDimension;
opts.container[ vert ? 'height' : 'width' ]( dim );
}
else if ( opts.carouselVisible ) {
dim = visCount * $(opts.slides[0])[vert ? 'outerHeight' : 'outerWidth'](true);
opts.container[ vert ? 'height' : 'width' ]( dim );
}
// else {
// // fluid; don't size the container
// }
offset = ( opts.carouselOffset || 0 );
if ( opts.allowWrap !== false ) {
if ( opts.carouselSlideDimension ) {
offset -= ( (opts.slideCount + opts.currSlide) * opts.carouselSlideDimension );
}
else {
// calculate offset based on actual slide dimensions
tmp = opts._carouselWrap.children();
for (j=0; j < (opts.slideCount + opts.currSlide); j++) {
offset -= $(tmp[j])[vert?'outerHeight':'outerWidth'](true);
}
}
}
opts._carouselWrap.css( vert ? 'top' : 'left', offset );
},
fluidSlides: function( opts ) {
var timeout;
var slide = opts.slides.eq(0);
var adjustment = slide.outerWidth() - slide.width();
var prepareDimensions = this.prepareDimensions;
// throttle resize event
$(window).on( 'resize', resizeThrottle);
opts._carouselResizeThrottle = resizeThrottle;
onResize();
function resizeThrottle() {
clearTimeout( timeout );
timeout = setTimeout( onResize, 20 );
}
function onResize() {
opts._carouselWrap.stop( false, true );
var slideWidth = opts.container.width() / opts.carouselVisible;
slideWidth = Math.ceil( slideWidth - adjustment );
opts._carouselWrap.children().width( slideWidth );
if ( opts._sentinel )
opts._sentinel.width( slideWidth );
prepareDimensions( opts );
}
},
// transition API impl
transition: function( opts, curr, next, fwd, callback ) {
var moveBy, props = {};
var hops = opts.nextSlide - opts.currSlide;
var vert = opts.carouselVertical;
var speed = opts.speed;
// handle all the edge cases for wrapping & non-wrapping
if ( opts.allowWrap === false ) {
fwd = hops > 0;
var currSlide = opts._currSlide;
var maxCurr = opts.slideCount - opts.carouselVisible;
if ( hops > 0 && opts.nextSlide > maxCurr && currSlide == maxCurr ) {
hops = 0;
}
else if ( hops > 0 && opts.nextSlide > maxCurr ) {
hops = opts.nextSlide - currSlide - (opts.nextSlide - maxCurr);
}
else if ( hops < 0 && opts.currSlide > maxCurr && opts.nextSlide > maxCurr ) {
hops = 0;
}
else if ( hops < 0 && opts.currSlide > maxCurr ) {
hops += opts.currSlide - maxCurr;
}
else
currSlide = opts.currSlide;
moveBy = this.getScroll( opts, vert, currSlide, hops );
opts.API.opts()._currSlide = opts.nextSlide > maxCurr ? maxCurr : opts.nextSlide;
}
else {
if ( fwd && opts.nextSlide === 0 ) {
// moving from last slide to first
moveBy = this.getDim( opts, opts.currSlide, vert );
callback = this.genCallback( opts, fwd, vert, callback );
}
else if ( !fwd && opts.nextSlide == opts.slideCount - 1 ) {
// moving from first slide to last
moveBy = this.getDim( opts, opts.currSlide, vert );
callback = this.genCallback( opts, fwd, vert, callback );
}
else {
moveBy = this.getScroll( opts, vert, opts.currSlide, hops );
}
}
props[ vert ? 'top' : 'left' ] = fwd ? ( "-=" + moveBy ) : ( "+=" + moveBy );
// throttleSpeed means to scroll slides at a constant rate, rather than
// a constant speed
if ( opts.throttleSpeed )
speed = (moveBy / $(opts.slides[0])[vert ? 'height' : 'width']() ) * opts.speed;
opts._carouselWrap.animate( props, speed, opts.easing, callback );
},
getDim: function( opts, index, vert ) {
var slide = $( opts.slides[index] );
return slide[ vert ? 'outerHeight' : 'outerWidth'](true);
},
getScroll: function( opts, vert, currSlide, hops ) {
var i, moveBy = 0;
if (hops > 0) {
for (i=currSlide; i < currSlide+hops; i++)
moveBy += this.getDim( opts, i, vert);
}
else {
for (i=currSlide; i > currSlide+hops; i--)
moveBy += this.getDim( opts, i, vert);
}
return moveBy;
},
genCallback: function( opts, fwd, vert, callback ) {
// returns callback fn that resets the left/top wrap position to the "real" slides
return function() {
var pos = $(opts.slides[opts.nextSlide]).position();
var offset = 0 - pos[vert?'top':'left'] + (opts.carouselOffset || 0);
opts._carouselWrap.css( opts.carouselVertical ? 'top' : 'left', offset );
callback();
};
},
// core API override
stopTransition: function() {
var opts = this.opts();
opts.slides.stop( false, true );
opts._carouselWrap.stop( false, true );
},
// core API supplement
onDestroy: function( e ) {
var opts = this.opts();
if ( opts._carouselResizeThrottle )
$( window ).off( 'resize', opts._carouselResizeThrottle );
opts.slides.prependTo( opts.container );
opts._carouselWrap.remove();
}
};
})(jQuery);
// source --> http://cuchet.es/wp-content/plugins/smart-grid-gallery/includes/dist/sgg.min.js?ver=8c3645465f024f2a9207a24c497ed4bf
/*!
* Justified Gallery - v3.4.0
* http://miromannino.com/projects/justified-gallery/
* Copyright (c) 2014 Miro Mannino
* Licensed under the MIT license.
*/
!(function(e){e.fn.justifiedGallery=function(t){function r(e,t,n){var r;r=e>t?e:t;if(r<=100){return n.settings.sizeRangeSuffixes.lt100}else if(r<=240){return n.settings.sizeRangeSuffixes.lt240}else if(r<=320){return n.settings.sizeRangeSuffixes.lt320}else if(r<=500){return n.settings.sizeRangeSuffixes.lt500}else if(r<=640){return n.settings.sizeRangeSuffixes.lt640}else{return n.settings.sizeRangeSuffixes.lt1024}}function i(e,t){return e.indexOf(t,e.length-t.length)!==-1}function s(e,t){return e.substring(0,e.length-t.length)}function o(e,t){var n=false;for(var r in t.settings.sizeRangeSuffixes){if(t.settings.sizeRangeSuffixes[r].length===0){n=true;continue}if(i(e,t.settings.sizeRangeSuffixes[r])){return t.settings.sizeRangeSuffixes[r]}}if(n)return"";else throw"unknown suffix for "+e}function u(e,t,n,i){var u=e.match(i.settings.extension);var a=u!=null?u[0]:"";var f=e.replace(i.settings.extension,"");f=s(f,o(f,i));f+=r(t,n,i)+a;return f}function a(t){var n=e(t.currentTarget).find(".sgg-caption");if(t.data.settings.cssAnimation){n.addClass("caption-visible").removeClass("caption-hidden")}else{n.stop().fadeTo(t.data.settings.captionSettings.animationDuration,t.data.settings.captionSettings.visibleOpacity)}}function f(t){var n=e(t.currentTarget).find(".sgg-caption");if(t.data.settings.cssAnimation){n.removeClass("caption-visible").removeClass("caption-hidden")}else{n.stop().fadeTo(t.data.settings.captionSettings.animationDuration,t.data.settings.captionSettings.nonVisibleOpacity)}}function l(e,t,n){if(n.settings.cssAnimation){e.addClass("entry-visible");t()}else{e.stop().fadeTo(n.settings.imagesAnimationDuration,1,t)}}function c(e,t){if(t.settings.cssAnimation){e.removeClass("entry-visible")}else{e.stop().fadeTo(0,0)}}function h(t,n,r,i,s,o,c){function v(){if(p!==d){h.attr("src",d)}}var h=t.find("img");h.css("width",i);h.css("height",s);h.css("margin-left",-i/2);h.css("margin-top",-s/2);t.width(i);t.height(o);t.css("top",r);t.css("left",n);var p=h.attr("src");var d=u(p,i,s,c);h.one("error",function(){h.attr("src",h.data("jg.originalSrc"))});if(h.data("jg.loaded")==="skipped"){h.one("load",function(){l(t,v,c);h.data("jg.loaded","loaded")})}else{l(t,v,c)}var m=t.data("jg.captionMouseEvents");if(c.settings.captions===true){var g=t.find(".sgg-caption");if(g.length===0){var y=h.attr("alt");if(typeof y==="undefined")y=t.attr("title");if(typeof y!=="undefined"){g=e('
'+y+"
");t.append(g)}}if(g.length!==0){if(!c.settings.cssAnimation){g.stop().fadeTo(c.settings.imagesAnimationDuration,c.settings.captionSettings.nonVisibleOpacity)}if(typeof m==="undefined"){m={mouseenter:a,mouseleave:f};t.on("mouseenter",undefined,c,m.mouseenter);t.on("mouseleave",undefined,c,m.mouseleave);t.data("jg.captionMouseEvents",m)}}}else{if(typeof m!=="undefined"){t.off("mouseenter",undefined,c,m.mouseenter);t.off("mouseleave",undefined,c,m.mouseleave);t.removeData("jg.captionMouseEvents")}}}function p(e,t){var n=e.settings;var r,i,s,o,u,a,f=true;var l=0;var c=e.galleryWidth-(e.buildingRow.entriesBuff.length-1)*n.margins;var h=c/e.buildingRow.aspectRatio;var p=e.buildingRow.width/c>n.justifyThreshold;if(t&&n.lastRow==="hide"&&!p){for(r=0;ra)l=a}if(n.fixedHeight&&l>n.rowHeight)l=n.rowHeight;return{minHeight:l,justify:f}}function d(e){e.lastAnalyzedIndex=-1;e.buildingRow.entriesBuff=[];e.buildingRow.aspectRatio=0;e.buildingRow.width=0;e.offY=0}function v(e,t){var n=e.settings;var r,i,s,o,u=0;o=p(e,t);s=o.minHeight;if(t&&n.lastRow==="hide"&&s===-1){e.buildingRow.entriesBuff=[];e.buildingRow.aspectRatio=0;e.buildingRow.width=0;return}if(n.maxRowHeight>0&&n.maxRowHeight=t.entries.length-1;var a=t.galleryWidth-(t.buildingRow.entriesBuff.length-1)*r.margins;var f=u.data("jg.imgw")/u.data("jg.imgh");if(a/(t.buildingRow.aspectRatio+f)=t.yield.every){w(t,n);return}}t.buildingRow.entriesBuff.push(o);t.buildingRow.aspectRatio+=f;t.buildingRow.width+=f*r.rowHeight;t.lastAnalyzedIndex=s}else if(u.data("jg.loaded")!=="error"){return}}if(t.buildingRow.entriesBuff.length>0)v(t,true);if(t.spinner.active){t.spinner.active=false;t.$gallery.height(t.$gallery.height()-t.spinner.$el.innerHeight());t.spinner.$el.detach();y(t.spinner)}b(t);if(!n)t.$gallery.trigger("jg.complete");else t.$gallery.trigger("jg.resize")}function S(e){function n(e){if(typeof t.sizeRangeSuffixes[e]!=="string")throw"sizeRangeSuffixes."+e+" must be a string"}function r(e,t){if(typeof e[t]==="string"){e[t]=parseFloat(e[t],10);if(isNaN(e[t]))throw"invalid number for "+t}else if(typeof e[t]==="number"){if(isNaN(e[t]))throw"invalid number for "+t}else{throw t+" must be a number"}}var t=e.settings;if(typeof t.sizeRangeSuffixes!=="object")throw"sizeRangeSuffixes must be defined and must be an object";n("lt100");n("lt240");n("lt320");n("lt500");n("lt640");n("lt1024");r(t,"rowHeight");r(t,"maxRowHeight");if(t.maxRowHeight>0&&t.maxRowHeight1)throw"justifyThreshold must be in the interval [0,1]";if(typeof t.cssAnimation!=="boolean"){throw"cssAnimation must be a boolean"}r(t.captionSettings,"animationDuration");r(t,"imagesAnimationDuration");r(t.captionSettings,"visibleOpacity");if(t.captionSettings.visibleOpacity<0||t.captionSettings.visibleOpacity>1)throw"captionSettings.visibleOpacity must be in the interval [0, 1]";r(t.captionSettings,"nonVisibleOpacity");if(t.captionSettings.visibleOpacity<0||t.captionSettings.visibleOpacity>1)throw"captionSettings.nonVisibleOpacity must be in the interval [0, 1]";if(typeof t.fixedHeight!=="boolean"){throw"fixedHeight must be a boolean"}if(typeof t.captions!=="boolean"){throw"captions must be a boolean"}r(t,"refreshTime");if(typeof t.randomize!=="boolean"){throw"randomize must be a boolean"}}var n={sizeRangeSuffixes:{lt100:"_t",lt240:"_m",lt320:"_n",lt500:"",lt640:"_z",lt1024:"_b"},rowHeight:120,maxRowHeight:0,margins:1,lastRow:"nojustify",justifyThreshold:.75,fixedHeight:false,waitThumbnailsLoad:true,captions:true,cssAnimation:false,imagesAnimationDuration:500,captionSettings:{animationDuration:500,visibleOpacity:.7,nonVisibleOpacity:0},rel:null,target:null,extension:/\.[^.\\/]+$/,refreshTime:100,randomize:false};return this.each(function(r,i){var s=e(i);s.addClass("justified-gallery");var o=s.data("jg.context");if(typeof o==="undefined"){if(typeof t!=="undefined"&&t!==null&&typeof t!=="object")throw"The argument must be an object";var u=e('